/*!
 * \file Process.h
 * \brief
 */

#ifndef PROCESS_H
#define PROCESS_H

#include <list>

namespace tsc
{
namespace common
{

/*!
 * \brief The UDP Server class
 */
class Process
{
public:
  Process(boost::asio::io_service* pIoService);
  virtual ~Process();

protected:
  virtual void RegisterServers() = 0;
  void RegisterServer(ServerUdp* pServer);
  void RegisterServer(ServerTcp* pServer);

private:
  Process() : mpIoService(0) { }
  void InitProcess();


  boost::asio::io_service* mpIoService;
  std::list<ServerUdp*>    mUdpServers;
  std::list<ServerTcp*>    mTcpServers;
};


} // namespace common
} // namespace tsc

#endif // PROCESS_H
